<?php
//检查函数
function check($func, $c = true)
{
  if($c)
    echo $func() ? 'class="ok"' : 'class="no"';
  else
    echo $func() ? '通过' : '未通过';
}
//PHP版本
function getPhpVersion()
{
  return version_compare(PHP_VERSION,"5.1.0",">=");
}

//SPL扩展
function getSpl()
{
  return extension_loaded("SPL");
}

//SERVER变量
function getServerVar()
{
  $vars=array('HTTP_HOST','REQUEST_URI','SERVER_NAME','SERVER_PORT','SCRIPT_NAME','SCRIPT_FILENAME','PHP_SELF','HTTP_ACCEPT','HTTP_USER_AGENT');
  $missing=array();
  foreach($vars as $var)
  {
    if(!isset($_SERVER[$var]))
      $missing[]=$var;
  }
  if(!empty($missing))
    return false;

  if(realpath($_SERVER["SCRIPT_FILENAME"]) !== realpath(__FILE__))
    return false;

  if(!isset($_SERVER["REQUEST_URI"]) && isset($_SERVER["QUERY_STRING"]))
    return false;

  if(!isset($_SERVER["PATH_INFO"]) && strpos($_SERVER["PHP_SELF"],$_SERVER["SCRIPT_NAME"]) !== 0)
    return false;

  return true;
}

//mysql扩展
function getMysql()
{
  return extension_loaded("mysql");
}

//mysqli扩展
function getMysqli()
{
  return extension_loaded("mysqli");
}

//PDO扩展
function getPdo()
{
  return extension_loaded("PDO");
}

//PDO mysql扩展 
function getPdoMysql()
{
  return extension_loaded('pdo_mysql');
}

//PDO sqlite扩展
function getPdoSqlite()
{
  return extension_loaded('pdo_sqlite');
}

//apc扩展 
function getApc()
{
  return extension_loaded('apc');
}

//gd扩展 
function getGd()
{
  if(extension_loaded('gd'))
  {
    $gdinfo=gd_info();
    if($gdinfo['FreeType Support'])
      return true;
    return false;
  }
  return false;
}

//memcache 扩展
function getMemcache()
{
  return extension_loaded("memcache") || extension_loaded("memcached");
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>DuoLam 运行环境需求检查</title>
<link rel="stylesheet" type="text/css" href="css/style.css" />
<body>
  <!-- 头部开始 -->
  <div id="header">
    <div id="top_line">
      <div id="nav">
        <a href="http://www.imoi.cn" target="_blank">官网</a>
        <a href="http://www.imoi.cn/about/" target="_blank">关于</a>
        <a href="http://www.imoi.cn/download/" target="_blank">下载</a>
        <a href="http://www.imoi.cn/manual/" target="_blank">手册</a>
        <a href="http://www.imoi.cn/case/" target="_blank">案例</a>
        <a href="http://www.imoi.cn/bbs/" target="_blank">论坛</a>
      </div>
    </div>
    <div id="logo">
      DuoLam 运行环境需求检查
    </div>
  </div>
  <!-- 头部结束 -->

  <!-- 主体开始 -->
  <div id="main">
    本页面用于确认您的web服务器的环境配置是否满足运行DuoLam Web应用的需求，会检测服务器所运行的PHP版本、服务器信息；以及查看PHP扩展模块等。
    <table id="system" border="0" cellspacing="0" cellpadding="0" width="100%">
      <tr class="center">
        <td width="180">检测名称</td>
        <td>是否通过</td>
        <td>说明</td>
        <td>备注</td>
      </tr>
      <tr class="h1">
        <td colspan="4">系统检测</td>
      </tr>
      <tr>
        <td>PHP版本</td>
        <td <?php check('getPhpVersion'); ?>><?php check('getPhpVersion', false); ?></td>
        <td>系统基础运行环境</td>
        <td>系统需要PHP 5.2.0 以上的版本</td>
      </tr>
      <tr>
        <td>SPL扩展</td>
        <td <?php check('getSpl'); ?>><?php check('getSpl', false); ?></td>
        <td>用于系统自动加载</td>
        <td>系统需要SPL扩展</td>
      </tr>
      <tr>
        <td>$_SERVER变量</td>
        <td <?php check('getServerVar'); ?>><?php check('getServerVar', false); ?></td>
        <td>用于系统URL定位</td>
        <td>该变量是系统必须的</td>
      </tr>
      <tr class="h1">
        <td colspan="4">数据库相关</td>
      </tr>
      <tr>
        <td>Mysql</td>
        <td <?php check('getMysql'); ?>><?php check('getMysql', false); ?></td>
        <td>如果使用mysql数据库，则必须开启该扩展</td>
        <td>没有系统可以运行</td>
      </tr>
      <tr>
        <td>Mysqli</td>
        <td <?php check('getMysqli'); ?>><?php check('getMysqli', false); ?></td>
        <td>如果使用mysql数据库的扩展，则必须开启该扩展</td>
        <td>没有系统可以运行</td>
      </tr>
      <tr>
        <td>PDO</td>
        <td <?php check('getPdo'); ?>><?php check('getPdo', false); ?></td>
        <td>如果使用PDO数据库接口，则必须开启PDO扩展</td>
        <td>没有系统可以运行</td>
      </tr>
      <tr>
        <td>PDO Mysql</td>
        <td <?php check('getPdoMysql'); ?>><?php check('getPdoMysql', false); ?></td>
        <td>PDO的Mysql接口，如要使用，则必须开启</td>
        <td>没有系统可以运行</td>
      </tr>
      <tr>
        <td>PDO Sqlite</td>
        <td <?php check('getPdoSqlite'); ?>><?php check('getPdoSqlite', false); ?></td>
        <td>PDO的SQLite接口，如要使用，则必须开启</td>
        <td>DP的演示Blog依赖此接口</td>
      </tr>
      <tr class="h1">
        <td colspan="4">其他扩展</td>
      </tr>
      <tr>
        <td>GD扩展</td>
        <td <?php check('getGd'); ?>><?php check('getGd', false); ?></td>
        <td>该扩展用于生成图片，验证码，水印等</td>
        <td>没有系统可以运行</td>
      </tr>
      <tr>
        <td>Memcache扩展</td>
        <td <?php check('getMemcache'); ?>><?php check('getMemcache', false); ?></td>
        <td>该扩展用于系统使用第三方缓存功能，如要使用memcache，请添加该扩展</td>
        <td>没有系统可以运行</td>
      </tr>
      <tr>
        <td>APC扩展</td>
        <td <?php check('getApc'); ?>><?php check('getApc', false); ?></td>
        <td>该扩展用于系统使用第三方缓存功能，如要使用apc，请添加该扩展</td>
        <td>没有系统可以运行</td>
      </tr>
    </table>
  </div>
  <!-- 主体结束 -->
  <!-- 脚部开始 -->
  <div class="clear"></div>
  <div id="footer" class="font12">
    CopyRight © 2011-2013 All Right Reserved <a href="http://www.imoi.cn" title="DuolamPHP">DuolamPHP</a> 版权所有
  </div>
  <!-- 脚部结束 -->
</body>
</html>